package routers

import (
	"wx-uniapp-go/api/controller/user"
	"wx-uniapp-go/internal/middleware"
)

func InitUserRoute() {
	//用户相关
	group := engine.Group("/user/")
	{
		group.POST("login", user.UserLogin)
		group.POST("register", user.UserRegister)
	}

	//userInfoGroup := engine.Group("/user_info/").Use(middleware.CheckLogin())
	//{
	//	userInfoGroup.POST("", user.GetUserInfo)
	//	userInfoGroup.POST("save", user.SaveUserInfo)
	//	userInfoGroup.POST("data", user.GetUserData)
	//}

	// 积分相关路由
	pointsGroup := engine.Group("/points").Use(middleware.CheckLogin())
	{
		pointsGroup.POST("/change", user.ChangePoints) // 变更积分
		pointsGroup.GET("/info", user.GetUserPoints)   // 获取积分信息
		pointsGroup.GET("/rules", user.GetPointsRules) // 获取积分规则

	}

	// 积分规则管理路由组
	ruleGroup := engine.Group("/rule").Use(middleware.CheckLogin()) // 添加管理员权限检查
	{
		ruleGroup.POST("", user.CreatePointsRule)    // 创建规则
		ruleGroup.PUT("", user.UpdatePointsRule)     // 更新规则
		ruleGroup.DELETE("", user.DeletePointsRule)  // 删除规则
		ruleGroup.GET("/list", user.ListPointsRules) // 规则列表
	}

	// 优惠券规则管理路由组
	couponRuleGroup := engine.Group("/coupon/rule").Use(middleware.CheckLogin())
	{
		couponRuleGroup.POST("", user.CreateCouponRule)      // 创建规则
		couponRuleGroup.PUT("", user.UpdateCouponRule)       // 更新规则
		couponRuleGroup.DELETE("", user.DeleteCouponRule)    // 删除规则
		couponRuleGroup.GET("/list", user.ListCouponRules)   // 规则列表
		couponRuleGroup.GET("/stat", user.GetRuleCouponStat) // 规则统计
	}

	// 优惠券相关路由组
	couponGroup := engine.Group("/coupon").Use(middleware.CheckLogin())
	{
		couponGroup.POST("/receive", user.ReceiveCoupon) // 领取优惠券
		couponGroup.GET("/list", user.ListUserCoupons)   // 优惠券列表
		couponGroup.GET("/stat", user.GetUserCouponStat) // 用户优惠券统计
	}

	// 收货地址相关路由组
	addressGroup := engine.Group("/address").Use(middleware.CheckLogin())
	{
		addressGroup.POST("", user.CreateAddress)   // 创建地址
		addressGroup.PUT("", user.UpdateAddress)    // 更新地址
		addressGroup.DELETE("", user.DeleteAddress) // 删除地址
		addressGroup.GET("/list", user.ListAddress) // 地址列表
	}

	// 收藏相关路由组
	favoriteGroup := engine.Group("/favorite").Use(middleware.CheckLogin())
	{
		favoriteGroup.POST("", user.CreateFavorite)   // 创建收藏
		favoriteGroup.PUT("", user.UpdateFavorite)    // 更新收藏
		favoriteGroup.DELETE("", user.DeleteFavorite) // 删除收藏
		favoriteGroup.GET("/list", user.ListFavorite) // 收藏列表
	}
}
